package org.example.hutool.other;

import cn.hutool.core.codec.Base32;
import cn.hutool.core.codec.Base62;
import cn.hutool.core.codec.Base64;
import org.junit.Test;

/**
 * Base32就是用32（2的5次方）个特定ASCII码来表示256个ASCII码。所以，5个ASCII字符经过base32编码后会变为8个字符（公约数为40），长度增加3/5.不足8n用“=”补足。
 * Base62编码是由10个数字、26个大写英文字母和26个小写英文字母组成，多用于安全领域和短URL生成。
 * Base64编码是用64（2的6次方）个ASCII字符来表示256（2的8次方）个ASCII字符，也就是三位二进制数组经过编码后变为四位的ASCII字符显示，长度比原来增加1/3。
 *
 * @author wangMaoXiong
 * @version 1.0
 * @date 2021/4/3 9:39
 */
public class BaseCode {
    @Test
    public void test() {
        String text = "万里长城今犹在，不见当年秦始皇。";

        String base32Encode = Base32.encode(text);
        String base32decode = Base32.decodeStr(base32Encode);
        //base32Encode=4S4IP2MHRTUZLP7FT6HOJO4K46FLTZM4VDX3ZDHEXCG6RJ4B4W6ZHZNZWTT2PJXFU6F6PGUH4OAIE
        //base32decode=万里长城今犹在，不见当年秦始皇。
        System.out.println("base32Encode=" + base32Encode);
        System.out.println("base32decode=" + base32decode);

        String base62Encode = Base62.encode(text);
        String base62decode = Base62.decodeStr(base62Encode);
        //base62Encode=6oZsea0jmzWPWXugCl6jI6ITFh2lbUP6vEuBUI9IFM8oIXPwyPstBhq1Ds8v9M4FG
        //base62decode=万里长城今犹在，不见当年秦始皇。
        System.out.println("base62Encode=" + base62Encode);
        System.out.println("base62decode=" + base62decode);

        String base64Encode = Base64.encode(text);
        String base64decode = Base64.decodeStr(base64Encode);
        //base64Encode=5LiH6YeM6ZW/5Z+O5LuK54q55Zyo77yM5LiN6KeB5b2T5bm056em5aeL55qH44CC
        //base64decode=万里长城今犹在，不见当年秦始皇。
        System.out.println("base64Encode=" + base64Encode);
        System.out.println("base64decode=" + base64decode);

    }
}
